Un arbol de decision es un mapa de los posibles resultados de una serie de decisiones relacionadas.
Permute que un individuo o una organizacion comparen posibles acciones entre si segun sus costosm probabilidades y beneficios.
¿COMO HACER UN ARBOL DE DECISIONES?
Note
Empieza por la decision: En la caja para el nodo de raiz, escribe la decisiom que quieres tomar.
Enumera tus opciones: Usa conectores para enumerar tus opciones y conectarlas con el nodo de rais usando ramas.
Sometela a pruebas: aplica las mismas pruebas a cada opcion.
Enumera las conclusiones: Al terminar cada grupo de preguntas puedes optar por mostrar el riesgo de tus conclusiones con grados de probabilidad (ALTA, MEDIA, BAJA) .
🥑MODELO 1▼
1) IMPORTAR BD:
library(readxl) Caso_Aguacate_xls<-read_excel("avocado.csv..xlsx")# TRANSFORMAMOS EN FRAME Caso_Aguacate_xls_frame <-as.data.frame(Caso_Aguacate_xls)head(Caso_Aguacate_xls_frame)
INDICE Date (FECHA DE OBSERVACION)
1 0 2015-12-27
2 1 2015-12-20
3 2 2015-12-13
4 3 2015-12-06
5 4 2015-11-29
6 5 2015-11-22
AveragePrice (PRECIO PROMEDIO)
1 1.33
2 1.35
3 0.93
4 1.08
5 1.28
6 1.26
Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)
1 64237
2 54877
3 118220
4 78992
5 51040
6 55980
NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS
1 1037
2 674
3 795
4 1132
5 941
6 1184
NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS
1 54455
2 44639
3 109150
4 71976
5 43838
6 48068
NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS
1 48
2 58
3 131
4 73
5 76
6 44
Total Bags (BOLSAS TOTALES) Small Bags (BOLSAS PEQUEÑAS)
1 8697 8604
2 9506 9408
3 8145 8042
4 5811 5677
5 6184 5986
6 6684 6556
Large Bags (BOLSAS GRANDES) XLarge Bags (BOLSAS EXTRAGRANDES) type (TIPO)
1 93 0 conventional
2 97 0 conventional
3 103 0 conventional
4 134 0 conventional
5 198 0 conventional
6 127 0 conventional
year (AÑO) region (REGION)
1 2015 Albany
2 2015 Albany
3 2015 Albany
4 2015 Albany
5 2015 Albany
6 2015 Albany
CATEGORIZANDO:
library(epiDisplay) Caso_Aguacate_xls_frame$cat_Aguacate <-ifelse(Caso_Aguacate_xls_frame$`AveragePrice (PRECIO PROMEDIO)`<=1 , 'promedio-','promedio+') Caso_Aguacate_xls_frame$cat_numero_total_vendido <-ifelse(Caso_Aguacate_xls_frame$`Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)`<=850644 , 'ventas menores','ventas mayores') Caso_Aguacate_xls_frame$cat_numero_4046_vendido <-ifelse(Caso_Aguacate_xls_frame$`NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS`<=293008 , 'ventas menores de 4046','ventas mayores de 4046') Caso_Aguacate_xls_frame$cat_numero_4225_vendido <-ifelse(Caso_Aguacate_xls_frame$`NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS`<=295154 , 'ventas menores de 4225','ventas mayores de 4225') Caso_Aguacate_xls_frame$cat_numero_4770_vendido <-ifelse(Caso_Aguacate_xls_frame$`NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS`<=22839 , 'ventas menores de 4770','ventas mayores de 4770') Caso_Aguacate_xls_frame$bolsas_totales <-ifelse(Caso_Aguacate_xls_frame$`Total Bags (BOLSAS TOTALES)`<=239639 , 'bolsas totales menores','bolsas totales mayores') Caso_Aguacate_xls_frame$bolsas_pequeñas <-ifelse(Caso_Aguacate_xls_frame$`Small Bags (BOLSAS PEQUEÑAS)`<=182194 , 'bolsas pequeñas menores','bolsas pequeñas mayores') Caso_Aguacate_xls_frame$bolsas_grandes <-ifelse(Caso_Aguacate_xls_frame$`Large Bags (BOLSAS GRANDES)`<=54338 , 'bolsas grandes menores','bolsas grandes mayores') Caso_Aguacate_xls_frame$bolsas_extragrandes <-ifelse(Caso_Aguacate_xls_frame$`XLarge Bags (BOLSAS EXTRAGRANDES)`<=3106 , 'bolsas extragrandes menores','bolsas extragrandes mayores')
METODOLOGIA CRISP-DM
Note
Important
1. Conocimiento del negocio
2. Conocimiento de los datos
3. Pre-procesamiento de datos
4. Modelamiento
5. Evaluación
6. Implementación
1. Conocimiento del negocio
Note
Important
DESCRIPCIÓN DEL NEGOCIO
TRATA SOBRE LOS PRECIO DEL AGUACATE LOS PRECIOS PROMEDIO CON DIFERENTES
ETIQUETAS AL MAYOR Y MENOR CANTIDAD DE BOLSAS
2. Conocimiento de los datos
Note
Important
Caso AGUACATE
corresponde a los registros de las ventas de aguacate de varias entidades de venta
el atributo contiene al resultado de las ventas de agucate con diferentes etiquetas dados
en periodos anteriores (Si el precio promedio fue favorable)
El objetivo es construir un modelo que permita predecir si el aguacate es favorable o no
summary(Caso_Aguacate_xls_frame)
INDICE Date (FECHA DE OBSERVACION)
Min. : 0.00 Min. :2015-01-04 00:00:00.0
1st Qu.:10.00 1st Qu.:2015-10-25 00:00:00.0
Median :24.00 Median :2016-08-14 00:00:00.0
Mean :24.23 Mean :2016-08-13 23:30:43.5
3rd Qu.:38.00 3rd Qu.:2017-06-04 00:00:00.0
Max. :52.00 Max. :2018-03-25 00:00:00.0
AveragePrice (PRECIO PROMEDIO)
Min. :0.440
1st Qu.:1.100
Median :1.370
Mean :1.406
3rd Qu.:1.660
Max. :3.250
Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)
Min. : 85
1st Qu.: 10839
Median : 107377
Mean : 850644
3rd Qu.: 432962
Max. :62505647
NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS
Min. : 0
1st Qu.: 854
Median : 8645
Mean : 293008
3rd Qu.: 111020
Max. :22743616
NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS
Min. : 0
1st Qu.: 3009
Median : 29061
Mean : 295155
3rd Qu.: 150207
Max. :20470573
NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS
Min. : 0
1st Qu.: 0
Median : 185
Mean : 22840
3rd Qu.: 6243
Max. :2546439
Total Bags (BOLSAS TOTALES) Small Bags (BOLSAS PEQUEÑAS)
Min. : 0 Min. : 0
1st Qu.: 5089 1st Qu.: 2849
Median : 39744 Median : 26363
Mean : 239639 Mean : 182195
3rd Qu.: 110783 3rd Qu.: 83338
Max. :19373134 Max. :13384587
Large Bags (BOLSAS GRANDES) XLarge Bags (BOLSAS EXTRAGRANDES)
Min. : 0 Min. : 0.0
1st Qu.: 127 1st Qu.: 0.0
Median : 2648 Median : 0.0
Mean : 54338 Mean : 3106.4
3rd Qu.: 22029 3rd Qu.: 132.5
Max. :5719097 Max. :551693.7
type (TIPO) year (AÑO) region (REGION) cat_Aguacate
Length:18249 Min. :2015 Length:18249 Length:18249
Class :character 1st Qu.:2015 Class :character Class :character
Mode :character Median :2016 Mode :character Mode :character
Mean :2016
3rd Qu.:2017
Max. :2018
cat_numero_total_vendido cat_numero_4046_vendido cat_numero_4225_vendido
Length:18249 Length:18249 Length:18249
Class :character Class :character Class :character
Mode :character Mode :character Mode :character
cat_numero_4770_vendido bolsas_totales bolsas_pequeñas
Length:18249 Length:18249 Length:18249
Class :character Class :character Class :character
Mode :character Mode :character Mode :character
bolsas_grandes bolsas_extragrandes
Length:18249 Length:18249
Class :character Class :character
Mode :character Mode :character
str(Caso_Aguacate_xls_frame)
'data.frame': 18249 obs. of 23 variables:
$ INDICE : num 0 1 2 3 4 5 6 7 8 9 ...
$ Date (FECHA DE OBSERVACION) : POSIXct, format: "2015-12-27" "2015-12-20" ...
$ AveragePrice (PRECIO PROMEDIO) : num 1.33 1.35 0.93 1.08 1.28 1.26 0.99 0.98 1.02 1.07 ...
$ Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS): num 64237 54877 118220 78992 51040 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS: num 1037 674 795 1132 941 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS : num 54455 44639 109150 71976 43838 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS : num 48 58 131 73 76 44 93 80 85 113 ...
$ Total Bags (BOLSAS TOTALES) : num 8697 9506 8145 5811 6184 ...
$ Small Bags (BOLSAS PEQUEÑAS) : num 8604 9408 8042 5677 5986 ...
$ Large Bags (BOLSAS GRANDES) : num 93 97 103 134 198 127 122 562 284 564 ...
$ XLarge Bags (BOLSAS EXTRAGRANDES) : num 0 0 0 0 0 0 0 0 0 0 ...
$ type (TIPO) : chr "conventional" "conventional" "conventional" "conventional" ...
$ year (AÑO) : num 2015 2015 2015 2015 2015 ...
$ region (REGION) : chr "Albany" "Albany" "Albany" "Albany" ...
$ cat_Aguacate : chr "promedio+" "promedio+" "promedio-" "promedio+" ...
$ cat_numero_total_vendido : chr "ventas menores" "ventas menores" "ventas menores" "ventas menores" ...
$ cat_numero_4046_vendido : chr "ventas menores de 4046" "ventas menores de 4046" "ventas menores de 4046" "ventas menores de 4046" ...
$ cat_numero_4225_vendido : chr "ventas menores de 4225" "ventas menores de 4225" "ventas menores de 4225" "ventas menores de 4225" ...
$ cat_numero_4770_vendido : chr "ventas menores de 4770" "ventas menores de 4770" "ventas menores de 4770" "ventas menores de 4770" ...
$ bolsas_totales : chr "bolsas totales menores" "bolsas totales menores" "bolsas totales menores" "bolsas totales menores" ...
$ bolsas_pequeñas : chr "bolsas pequeñas menores" "bolsas pequeñas menores" "bolsas pequeñas menores" "bolsas pequeñas menores" ...
$ bolsas_grandes : chr "bolsas grandes menores" "bolsas grandes menores" "bolsas grandes menores" "bolsas grandes menores" ...
$ bolsas_extragrandes : chr "bolsas extragrandes menores" "bolsas extragrandes menores" "bolsas extragrandes menores" "bolsas extragrandes menores" ...
3. Pre-procesamiento de datos
Important
División entrenamiento y prueba
:::
library(caret)# install library (vctrs) particion1 <-createDataPartition(y=Caso_Aguacate_xls_frame$cat_Aguacate, p=0.70, list =FALSE) particion2 <-createDataPartition(y=Caso_Aguacate_xls_frame$cat_numero_total_vendido, p=0.70, list =FALSE) particion3 <-createDataPartition(y=Caso_Aguacate_xls_frame$cat_numero_4046_vendido, p=0.70, list =FALSE) particion4 <-createDataPartition(y=Caso_Aguacate_xls_frame$cat_numero_4225_vendido, p=0.70, list =FALSE) particion5 <-createDataPartition(y=Caso_Aguacate_xls_frame$cat_numero_4770_vendido, p=0.70, list =FALSE) particion6 <-createDataPartition(y=Caso_Aguacate_xls_frame$bolsas_totales, p=0.70, list =FALSE) particion7 <-createDataPartition(y=Caso_Aguacate_xls_frame$bolsas_pequeñas, p=0.70, list =FALSE) particion8 <-createDataPartition(y=Caso_Aguacate_xls_frame$bolsas_grandes, p=0.70, list =FALSE) particion9 <-createDataPartition(y=Caso_Aguacate_xls_frame$bolsas_extragrandes, p=0.70, list =FALSE)
# aplicar un modelo basado en árbollibrary(rpart)# rpart(y ~ x1+x2+x3...., data) modelo_ar2 <-rpart(cat_Aguacate~. , data = train1, method ="class", cp=0.011) modelo_ar3 <-rpart(cat_numero_total_vendido~. , data = train2, method ="class", cp=0.011) modelo_ar4 <-rpart(cat_numero_4046_vendido~. , data = train3, method ="class", cp=0.011) modelo_ar5 <-rpart(cat_numero_4225_vendido~. , data = train4, method ="class", cp=0.011) modelo_ar6 <-rpart(cat_numero_4770_vendido~. , data = train5, method ="class", cp=0.011) modelo_ar7 <-rpart(bolsas_totales~. , data = train6, method ="class", cp=0.011) modelo_ar8 <-rpart(bolsas_pequeñas~. , data = train7, method ="class", cp=0.011) modelo_ar9 <-rpart(bolsas_grandes~. , data = train8, method ="class", cp=0.011) modelo_ar10 <-rpart(bolsas_extragrandes~. , data = train9, method ="class", cp=0.011)
GRAFICAS
library(partykit)plot(as.party(modelo_ar2))
plot(as.party(modelo_ar3))
plot(as.party(modelo_ar4))
plot(as.party(modelo_ar5))
plot(as.party(modelo_ar6))
plot(as.party(modelo_ar7))
plot(as.party(modelo_ar8))
plot(as.party(modelo_ar9))
plot(as.party(modelo_ar10))
5. Evaluación
predichos2 <-predict(modelo_ar2, test1, type ="class") predichos3 <-predict(modelo_ar3, test2, type ="class") predichos4 <-predict(modelo_ar4, test3, type ="class") predichos5 <-predict(modelo_ar5, test4, type ="class") predichos6 <-predict(modelo_ar6, test5, type ="class") predichos7 <-predict(modelo_ar7, test6, type ="class") predichos8 <-predict(modelo_ar8, test7, type ="class") predichos9 <-predict(modelo_ar9, test8, type ="class") predichos10 <-predict(modelo_ar10, test9, type ="class")
predichos3
ventas mayores ventas menores
ventas mayores 819 0
ventas menores 0 4655
table(test3$cat_numero_4046_vendido,predichos4)
predichos4
ventas mayores de 4046 ventas menores de 4046
ventas mayores de 4046 739 0
ventas menores de 4046 1 4734
table(test4$cat_numero_4225_vendido,predichos5)
predichos5
ventas mayores de 4225 ventas menores de 4225
ventas mayores de 4225 891 0
ventas menores de 4225 0 4582
table(test5$cat_numero_4770_vendido,predichos6)
predichos6
ventas mayores de 4770 ventas menores de 4770
ventas mayores de 4770 655 0
ventas menores de 4770 0 4819
table(test6$bolsas_totales,predichos7)
predichos7
bolsas totales menores bolsas totales mayores
bolsas totales menores 4670 0
bolsas totales mayores 0 804
table(test7$bolsas_pequeñas,predichos8)
predichos8
bolsas pequeñas menores bolsas pequeñas mayores
bolsas pequeñas menores 4706 0
bolsas pequeñas mayores 0 768
table(test8$bolsas_grandes,predichos9)
predichos9
bolsas grandes menores bolsas grandes mayores
bolsas grandes menores 4654 1
bolsas grandes mayores 0 819
table(test9$bolsas_extragrandes,predichos10)
predichos10
bolsas extragrandes menores
bolsas extragrandes menores 4870
bolsas extragrandes mayores 0
predichos10
bolsas extragrandes mayores
bolsas extragrandes menores 0
bolsas extragrandes mayores 603
🥑MODELO 2▼
summary(Caso_Aguacate_xls_frame)
INDICE Date (FECHA DE OBSERVACION)
Min. : 0.00 Min. :2015-01-04 00:00:00.0
1st Qu.:10.00 1st Qu.:2015-10-25 00:00:00.0
Median :24.00 Median :2016-08-14 00:00:00.0
Mean :24.23 Mean :2016-08-13 23:30:43.5
3rd Qu.:38.00 3rd Qu.:2017-06-04 00:00:00.0
Max. :52.00 Max. :2018-03-25 00:00:00.0
AveragePrice (PRECIO PROMEDIO)
Min. :0.440
1st Qu.:1.100
Median :1.370
Mean :1.406
3rd Qu.:1.660
Max. :3.250
Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)
Min. : 85
1st Qu.: 10839
Median : 107377
Mean : 850644
3rd Qu.: 432962
Max. :62505647
NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS
Min. : 0
1st Qu.: 854
Median : 8645
Mean : 293008
3rd Qu.: 111020
Max. :22743616
NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS
Min. : 0
1st Qu.: 3009
Median : 29061
Mean : 295155
3rd Qu.: 150207
Max. :20470573
NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS
Min. : 0
1st Qu.: 0
Median : 185
Mean : 22840
3rd Qu.: 6243
Max. :2546439
Total Bags (BOLSAS TOTALES) Small Bags (BOLSAS PEQUEÑAS)
Min. : 0 Min. : 0
1st Qu.: 5089 1st Qu.: 2849
Median : 39744 Median : 26363
Mean : 239639 Mean : 182195
3rd Qu.: 110783 3rd Qu.: 83338
Max. :19373134 Max. :13384587
Large Bags (BOLSAS GRANDES) XLarge Bags (BOLSAS EXTRAGRANDES)
Min. : 0 Min. : 0.0
1st Qu.: 127 1st Qu.: 0.0
Median : 2648 Median : 0.0
Mean : 54338 Mean : 3106.4
3rd Qu.: 22029 3rd Qu.: 132.5
Max. :5719097 Max. :551693.7
type (TIPO) year (AÑO) region (REGION) cat_Aguacate
Length:18249 Min. :2015 Length:18249 Length:18249
Class :character 1st Qu.:2015 Class :character Class :character
Mode :character Median :2016 Mode :character Mode :character
Mean :2016
3rd Qu.:2017
Max. :2018
cat_numero_total_vendido cat_numero_4046_vendido cat_numero_4225_vendido
Length:18249 Length:18249 Length:18249
Class :character Class :character Class :character
Mode :character Mode :character Mode :character
cat_numero_4770_vendido bolsas_totales bolsas_pequeñas
Length:18249 Length:18249 Length:18249
Class :character Class :character Class :character
Mode :character Mode :character Mode :character
bolsas_grandes bolsas_extragrandes
Length:18249 Length:18249
Class :character Class :character
Mode :character Mode :character
str(Caso_Aguacate_xls_frame)
'data.frame': 18249 obs. of 23 variables:
$ INDICE : num 0 1 2 3 4 5 6 7 8 9 ...
$ Date (FECHA DE OBSERVACION) : POSIXct, format: "2015-12-27" "2015-12-20" ...
$ AveragePrice (PRECIO PROMEDIO) : num 1.33 1.35 0.93 1.08 1.28 1.26 0.99 0.98 1.02 1.07 ...
$ Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS): num 64237 54877 118220 78992 51040 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS: num 1037 674 795 1132 941 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS : num 54455 44639 109150 71976 43838 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS : num 48 58 131 73 76 44 93 80 85 113 ...
$ Total Bags (BOLSAS TOTALES) : num 8697 9506 8145 5811 6184 ...
$ Small Bags (BOLSAS PEQUEÑAS) : num 8604 9408 8042 5677 5986 ...
$ Large Bags (BOLSAS GRANDES) : num 93 97 103 134 198 127 122 562 284 564 ...
$ XLarge Bags (BOLSAS EXTRAGRANDES) : num 0 0 0 0 0 0 0 0 0 0 ...
$ type (TIPO) : chr "conventional" "conventional" "conventional" "conventional" ...
$ year (AÑO) : num 2015 2015 2015 2015 2015 ...
$ region (REGION) : chr "Albany" "Albany" "Albany" "Albany" ...
$ cat_Aguacate : chr "promedio+" "promedio+" "promedio-" "promedio+" ...
$ cat_numero_total_vendido : chr "ventas menores" "ventas menores" "ventas menores" "ventas menores" ...
$ cat_numero_4046_vendido : chr "ventas menores de 4046" "ventas menores de 4046" "ventas menores de 4046" "ventas menores de 4046" ...
$ cat_numero_4225_vendido : chr "ventas menores de 4225" "ventas menores de 4225" "ventas menores de 4225" "ventas menores de 4225" ...
$ cat_numero_4770_vendido : chr "ventas menores de 4770" "ventas menores de 4770" "ventas menores de 4770" "ventas menores de 4770" ...
$ bolsas_totales : chr "bolsas totales menores" "bolsas totales menores" "bolsas totales menores" "bolsas totales menores" ...
$ bolsas_pequeñas : chr "bolsas pequeñas menores" "bolsas pequeñas menores" "bolsas pequeñas menores" "bolsas pequeñas menores" ...
$ bolsas_grandes : chr "bolsas grandes menores" "bolsas grandes menores" "bolsas grandes menores" "bolsas grandes menores" ...
$ bolsas_extragrandes : chr "bolsas extragrandes menores" "bolsas extragrandes menores" "bolsas extragrandes menores" "bolsas extragrandes menores" ...
# Gráficar el modelolibrary(rpart.plot)rpart.plot(modelo_arM2, cex=0.9, extra=1)
library(partykit) (as.party(modelo_arM2))
Model formula:
cat_Aguacate ~ INDICE + `Date (FECHA DE OBSERVACION)` +
`AveragePrice (PRECIO PROMEDIO)` + `Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)` +
`NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS` +
`NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS` +
`NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS` +
`Total Bags (BOLSAS TOTALES)` + `Small Bags (BOLSAS PEQUEÑAS)` +
`Large Bags (BOLSAS GRANDES)` + `XLarge Bags (BOLSAS EXTRAGRANDES)` +
`type (TIPO)` + `year (AÑO)` + `region (REGION)` + cat_numero_total_vendido +
cat_numero_4046_vendido + cat_numero_4225_vendido + cat_numero_4770_vendido +
bolsas_totales + bolsas_pequeñas + bolsas_grandes + bolsas_extragrandes
Fitted party:
[1] root
| [2] AveragePrice (PRECIO PROMEDIO) < 1.005: promedio- (n = 2075, err = 0.0%)
| [3] AveragePrice (PRECIO PROMEDIO) >= 1.005: promedio+ (n = 10701, err = 0.0%)
Number of inner nodes: 1
Number of terminal nodes: 2
plot(as.party(modelo_arM2))
# Importacia de las variables modelo_arM2$variable.importance
AveragePrice (PRECIO PROMEDIO)
3475.98231
NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS
304.88134
cat_numero_4046_vendido
252.95100
Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)
127.31309
region (REGION)
40.20413
Small Bags (BOLSAS PEQUEÑAS)
40.20413
Evaluación
predichosM2 <-predict(modelo_arM2, testM2, type ="class") predichosM2
# Ejemplo 2: minbucket=20 (minsplit=60) para obtener un árbol con más ramas modelo_arM3 <-rpart(cat_Aguacate~. , data = trainM2, method ="class", minbucket=20)# Mostrar el árbolprint(modelo_arM3)
# Gráficar el modelolibrary(rpart.plot)rpart.plot(modelo_arM3, cex=0.9, extra=1)
library(partykit) (as.party(modelo_arM3))
Model formula:
cat_Aguacate ~ INDICE + `Date (FECHA DE OBSERVACION)` +
`AveragePrice (PRECIO PROMEDIO)` + `Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)` +
`NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS` +
`NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS` +
`NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS` +
`Total Bags (BOLSAS TOTALES)` + `Small Bags (BOLSAS PEQUEÑAS)` +
`Large Bags (BOLSAS GRANDES)` + `XLarge Bags (BOLSAS EXTRAGRANDES)` +
`type (TIPO)` + `year (AÑO)` + `region (REGION)` + cat_numero_total_vendido +
cat_numero_4046_vendido + cat_numero_4225_vendido + cat_numero_4770_vendido +
bolsas_totales + bolsas_pequeñas + bolsas_grandes + bolsas_extragrandes
Fitted party:
[1] root
| [2] AveragePrice (PRECIO PROMEDIO) < 1.005: promedio- (n = 2075, err = 0.0%)
| [3] AveragePrice (PRECIO PROMEDIO) >= 1.005: promedio+ (n = 10701, err = 0.0%)
Number of inner nodes: 1
Number of terminal nodes: 2
plot(as.party(modelo_arM3))
# Importacia de las variables modelo_arM3$variable.importance
AveragePrice (PRECIO PROMEDIO)
3475.98231
NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS
304.88134
cat_numero_4046_vendido
252.95100
Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)
127.31309
region (REGION)
40.20413
Small Bags (BOLSAS PEQUEÑAS)
40.20413
Evaluación
predichosM3 <-predict(modelo_arM3, testM2, type ="class") predichosM3
# Controlando el crecimiento del árbol# con el parámetro de complejidad (cp=0.02) modelo_arM4 <-rpart(cat_Aguacate~. , data = trainM2, method ="class", cp=0.02)# Mostrar el árbolprint(modelo_arM4)
# cp=0.001 para obtener un árbol con más ramas modelo_arM5 <-rpart(cat_Aguacate~. , data = trainM2, method ="class", cp=0.001)# Mostrar el árbolprint(modelo_arM5)
# Controlando el crecimiento del árbol# por número máximo de niveles (maxdepth=4) modelo_arM6 <-rpart(cat_Aguacate~. , data = trainM2, method ="class", maxdepth=4)# Mostrar el árbolprint(modelo_arM6)
INDICE Date (FECHA DE OBSERVACION)
Min. : 0.00 Min. :2015-01-04 00:00:00.0
1st Qu.:10.00 1st Qu.:2015-10-25 00:00:00.0
Median :24.00 Median :2016-08-14 00:00:00.0
Mean :24.23 Mean :2016-08-13 23:30:43.5
3rd Qu.:38.00 3rd Qu.:2017-06-04 00:00:00.0
Max. :52.00 Max. :2018-03-25 00:00:00.0
AveragePrice (PRECIO PROMEDIO)
Min. :0.440
1st Qu.:1.100
Median :1.370
Mean :1.406
3rd Qu.:1.660
Max. :3.250
Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)
Min. : 85
1st Qu.: 10839
Median : 107377
Mean : 850644
3rd Qu.: 432962
Max. :62505647
NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS
Min. : 0
1st Qu.: 854
Median : 8645
Mean : 293008
3rd Qu.: 111020
Max. :22743616
NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS
Min. : 0
1st Qu.: 3009
Median : 29061
Mean : 295155
3rd Qu.: 150207
Max. :20470573
NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS
Min. : 0
1st Qu.: 0
Median : 185
Mean : 22840
3rd Qu.: 6243
Max. :2546439
Total Bags (BOLSAS TOTALES) Small Bags (BOLSAS PEQUEÑAS)
Min. : 0 Min. : 0
1st Qu.: 5089 1st Qu.: 2849
Median : 39744 Median : 26363
Mean : 239639 Mean : 182195
3rd Qu.: 110783 3rd Qu.: 83338
Max. :19373134 Max. :13384587
Large Bags (BOLSAS GRANDES) XLarge Bags (BOLSAS EXTRAGRANDES)
Min. : 0 Min. : 0.0
1st Qu.: 127 1st Qu.: 0.0
Median : 2648 Median : 0.0
Mean : 54338 Mean : 3106.4
3rd Qu.: 22029 3rd Qu.: 132.5
Max. :5719097 Max. :551693.7
type (TIPO) year (AÑO) region (REGION) cat_Aguacate
Length:18249 Min. :2015 Length:18249 Length:18249
Class :character 1st Qu.:2015 Class :character Class :character
Mode :character Median :2016 Mode :character Mode :character
Mean :2016
3rd Qu.:2017
Max. :2018
cat_numero_total_vendido cat_numero_4046_vendido cat_numero_4225_vendido
Length:18249 Length:18249 Length:18249
Class :character Class :character Class :character
Mode :character Mode :character Mode :character
cat_numero_4770_vendido bolsas_totales bolsas_pequeñas
Length:18249 Length:18249 Length:18249
Class :character Class :character Class :character
Mode :character Mode :character Mode :character
bolsas_grandes bolsas_extragrandes
Length:18249 Length:18249
Class :character Class :character
Mode :character Mode :character
str(Caso_Aguacate_xls_frame)
'data.frame': 18249 obs. of 23 variables:
$ INDICE : num 0 1 2 3 4 5 6 7 8 9 ...
$ Date (FECHA DE OBSERVACION) : POSIXct, format: "2015-12-27" "2015-12-20" ...
$ AveragePrice (PRECIO PROMEDIO) : num 1.33 1.35 0.93 1.08 1.28 1.26 0.99 0.98 1.02 1.07 ...
$ Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS): num 64237 54877 118220 78992 51040 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS: num 1037 674 795 1132 941 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS : num 54455 44639 109150 71976 43838 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS : num 48 58 131 73 76 44 93 80 85 113 ...
$ Total Bags (BOLSAS TOTALES) : num 8697 9506 8145 5811 6184 ...
$ Small Bags (BOLSAS PEQUEÑAS) : num 8604 9408 8042 5677 5986 ...
$ Large Bags (BOLSAS GRANDES) : num 93 97 103 134 198 127 122 562 284 564 ...
$ XLarge Bags (BOLSAS EXTRAGRANDES) : num 0 0 0 0 0 0 0 0 0 0 ...
$ type (TIPO) : chr "conventional" "conventional" "conventional" "conventional" ...
$ year (AÑO) : num 2015 2015 2015 2015 2015 ...
$ region (REGION) : chr "Albany" "Albany" "Albany" "Albany" ...
$ cat_Aguacate : chr "promedio+" "promedio+" "promedio-" "promedio+" ...
$ cat_numero_total_vendido : chr "ventas menores" "ventas menores" "ventas menores" "ventas menores" ...
$ cat_numero_4046_vendido : chr "ventas menores de 4046" "ventas menores de 4046" "ventas menores de 4046" "ventas menores de 4046" ...
$ cat_numero_4225_vendido : chr "ventas menores de 4225" "ventas menores de 4225" "ventas menores de 4225" "ventas menores de 4225" ...
$ cat_numero_4770_vendido : chr "ventas menores de 4770" "ventas menores de 4770" "ventas menores de 4770" "ventas menores de 4770" ...
$ bolsas_totales : chr "bolsas totales menores" "bolsas totales menores" "bolsas totales menores" "bolsas totales menores" ...
$ bolsas_pequeñas : chr "bolsas pequeñas menores" "bolsas pequeñas menores" "bolsas pequeñas menores" "bolsas pequeñas menores" ...
$ bolsas_grandes : chr "bolsas grandes menores" "bolsas grandes menores" "bolsas grandes menores" "bolsas grandes menores" ...
$ bolsas_extragrandes : chr "bolsas extragrandes menores" "bolsas extragrandes menores" "bolsas extragrandes menores" "bolsas extragrandes menores" ...
# 3. Pre-procesamiento de datos# División entrenamiento y pruebalibrary(caret)# install library (vctrs) particionM3 <-createDataPartition(y=Caso_Aguacate_xls_frame$`Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)`, p=0.70, list =FALSE) trainM3 <- Caso_Aguacate_xls_frame[particionM2, ] testM3 <- Caso_Aguacate_xls_frame[-particionM2, ]dim(Caso_Aguacate_xls_frame)
[1] 18249 23
dim(trainM3)
[1] 12776 23
dim(testM3)
[1] 5473 23
# Modelo modelo_regM8 =rpart(`Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)`~ ., data=trainM3, method="anova", cp=0.005)# Imprimir modeloprint(modelo_regM8)
n= 12776
node), split, n, deviance, yval
* denotes terminal node
1) root 12776 1.445348e+17 825219.6
2) NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS< 6090678 12664 1.839473e+16 535042.6
4) Total Bags (BOLSAS TOTALES)< 544507.5 11671 1.672144e+15 233047.1
8) cat_numero_total_vendido=ventas menores 10892 4.534683e+14 155404.0 *
9) cat_numero_total_vendido=ventas mayores 779 2.349271e+14 1318655.0 *
5) Total Bags (BOLSAS TOTALES)>=544507.5 993 3.147873e+15 4084478.0
10) region (REGION)=DallasFtWorth,Denver,GreatLakes,Houston,LosAngeles,Midsouth,NewYork,Northeast,Plains,Portland,Seattle,Southeast,TotalUS 647 7.098008e+14 3039057.0 *
11) region (REGION)=California,SouthCentral,West 346 4.087100e+14 6039354.0 *
3) NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS>=6090678 112 4.500814e+15 33635950.0
6) Total Bags (BOLSAS TOTALES)< 1.080809e+07 79 1.336867e+15 30999870.0 *
7) Total Bags (BOLSAS TOTALES)>=1.080809e+07 33 1.300788e+15 39946580.0 *
# Gráficar el modelolibrary(rpart.plot)rpart.plot(modelo_regM8, cex=0.7, extra=1)
library(partykit) (as.party(modelo_regM8))
Model formula:
`Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)` ~ INDICE +
`Date (FECHA DE OBSERVACION)` + `AveragePrice (PRECIO PROMEDIO)` +
`NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS` +
`NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS` +
`NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS` +
`Total Bags (BOLSAS TOTALES)` + `Small Bags (BOLSAS PEQUEÑAS)` +
`Large Bags (BOLSAS GRANDES)` + `XLarge Bags (BOLSAS EXTRAGRANDES)` +
`type (TIPO)` + `year (AÑO)` + `region (REGION)` + cat_Aguacate +
cat_numero_total_vendido + cat_numero_4046_vendido + cat_numero_4225_vendido +
cat_numero_4770_vendido + bolsas_totales + bolsas_pequeñas +
bolsas_grandes + bolsas_extragrandes
Fitted party:
[1] root
| [2] NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS < 6090678
| | [3] Total Bags (BOLSAS TOTALES) < 544507.5
| | | [4] cat_numero_total_vendido in ventas menores: 155403.995 (n = 10892, err = 4.534683e+14)
| | | [5] cat_numero_total_vendido in ventas mayores: 1318655.422 (n = 779, err = 2.349271e+14)
| | [6] Total Bags (BOLSAS TOTALES) >= 544507.5
| | | [7] region (REGION) in DallasFtWorth, Denver, GreatLakes, Houston, LosAngeles, Midsouth, NewYork, Northeast, Plains, Portland, Seattle, Southeast, TotalUS: 3039056.881 (n = 647, err = 7.098008e+14)
| | | [8] region (REGION) in California, SouthCentral, West: 6039353.697 (n = 346, err = 4.0871e+14)
| [9] NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS >= 6090678
| | [10] Total Bags (BOLSAS TOTALES) < 10808092.5: 30999867.886 (n = 79, err = 1.336867e+15)
| | [11] Total Bags (BOLSAS TOTALES) >= 10808092.5: 39946579.606 (n = 33, err = 1.300788e+15)
Number of inner nodes: 5
Number of terminal nodes: 6
plot(as.party(modelo_regM8))
# Importacia de las variables modelo_regM8$variable.importance
Total Bags (BOLSAS TOTALES)
1.382246e+17
Small Bags (BOLSAS PEQUEÑAS)
1.365812e+17
NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS
1.298415e+17
NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS
1.298368e+17
NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS
9.014340e+16
Large Bags (BOLSAS GRANDES)
7.528293e+16
XLarge Bags (BOLSAS EXTRAGRANDES)
4.812533e+15
bolsas_pequeñas
4.415540e+15
region (REGION)
2.029362e+15
cat_numero_total_vendido
9.837488e+14
Date (FECHA DE OBSERVACION)
6.775123e+14
year (AÑO)
6.775123e+14
AveragePrice (PRECIO PROMEDIO)
3.929690e+14
cat_numero_4046_vendido
3.662223e+14
bolsas_totales
3.169717e+14
# Para limpiar el workspace o informacion cargada#rm(list = ls())# Limpiar espacio gráfico#dev.off()# Cambiar el directorio de trabajo (Donde se encuentra el archivo)#setwd(dirname(rstudioapi::getActiveDocumentContext()$path))#setwd("D:\2022\2022-2\Pregrado\UNJFSC\Software de aplicación\Sesión 02")#getwd()# Importando los datos de excellibrary(readxl) Caso_Aguacate_xls<-read_excel("avocado.csv..xlsx")# Es conveniente transformarlo a dataFrame Caso_Aguacate_xls_frame <-as.data.frame(Caso_Aguacate_xls)summary(Caso_Aguacate_xls_frame)
INDICE Date (FECHA DE OBSERVACION)
Min. : 0.00 Min. :2015-01-04 00:00:00.0
1st Qu.:10.00 1st Qu.:2015-10-25 00:00:00.0
Median :24.00 Median :2016-08-14 00:00:00.0
Mean :24.23 Mean :2016-08-13 23:30:43.5
3rd Qu.:38.00 3rd Qu.:2017-06-04 00:00:00.0
Max. :52.00 Max. :2018-03-25 00:00:00.0
AveragePrice (PRECIO PROMEDIO)
Min. :0.440
1st Qu.:1.100
Median :1.370
Mean :1.406
3rd Qu.:1.660
Max. :3.250
Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS)
Min. : 85
1st Qu.: 10839
Median : 107377
Mean : 850644
3rd Qu.: 432962
Max. :62505647
NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS
Min. : 0
1st Qu.: 854
Median : 8645
Mean : 293008
3rd Qu.: 111020
Max. :22743616
NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS
Min. : 0
1st Qu.: 3009
Median : 29061
Mean : 295155
3rd Qu.: 150207
Max. :20470573
NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS
Min. : 0
1st Qu.: 0
Median : 185
Mean : 22840
3rd Qu.: 6243
Max. :2546439
Total Bags (BOLSAS TOTALES) Small Bags (BOLSAS PEQUEÑAS)
Min. : 0 Min. : 0
1st Qu.: 5089 1st Qu.: 2849
Median : 39744 Median : 26363
Mean : 239639 Mean : 182195
3rd Qu.: 110783 3rd Qu.: 83338
Max. :19373134 Max. :13384587
Large Bags (BOLSAS GRANDES) XLarge Bags (BOLSAS EXTRAGRANDES)
Min. : 0 Min. : 0.0
1st Qu.: 127 1st Qu.: 0.0
Median : 2648 Median : 0.0
Mean : 54338 Mean : 3106.4
3rd Qu.: 22029 3rd Qu.: 132.5
Max. :5719097 Max. :551693.7
type (TIPO) year (AÑO) region (REGION)
Length:18249 Min. :2015 Length:18249
Class :character 1st Qu.:2015 Class :character
Mode :character Median :2016 Mode :character
Mean :2016
3rd Qu.:2017
Max. :2018
str(Caso_Aguacate_xls_frame)
'data.frame': 18249 obs. of 14 variables:
$ INDICE : num 0 1 2 3 4 5 6 7 8 9 ...
$ Date (FECHA DE OBSERVACION) : POSIXct, format: "2015-12-27" "2015-12-20" ...
$ AveragePrice (PRECIO PROMEDIO) : num 1.33 1.35 0.93 1.08 1.28 1.26 0.99 0.98 1.02 1.07 ...
$ Total Volume (NUMERO TOTAL DE AGUACATES VENDIDOS): num 64237 54877 118220 78992 51040 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4046-PEQUEÑO VENDIDOS: num 1037 674 795 1132 941 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4225-LARGO VENDIDOS : num 54455 44639 109150 71976 43838 ...
$ NUMERO TOTAL DE AGUACATE CON PLU 4770-GRANDE VENDIDOS : num 48 58 131 73 76 44 93 80 85 113 ...
$ Total Bags (BOLSAS TOTALES) : num 8697 9506 8145 5811 6184 ...
$ Small Bags (BOLSAS PEQUEÑAS) : num 8604 9408 8042 5677 5986 ...
$ Large Bags (BOLSAS GRANDES) : num 93 97 103 134 198 127 122 562 284 564 ...
$ XLarge Bags (BOLSAS EXTRAGRANDES) : num 0 0 0 0 0 0 0 0 0 0 ...
$ type (TIPO) : chr "conventional" "conventional" "conventional" "conventional" ...
$ year (AÑO) : num 2015 2015 2015 2015 2015 ...
$ region (REGION) : chr "Albany" "Albany" "Albany" "Albany" ...
#CREAMOS TABLAS DE ENTRENAMIENTO Y DE PRUEBA filas_para_entrenar <-sample(1:18249, 700) TRAIN00 <- Caso_Aguacate_xls_frame[filas_para_entrenar,] TEST01 <- Caso_Aguacate_xls_frame[-filas_para_entrenar,]dim(Caso_Aguacate_xls_frame)
[1] 18249 14
dim(TRAIN00)
[1] 700 14
dim(TEST01)
[1] 17549 14
library(rpart) arbol_ <-rpart(`type (TIPO)`~., data = TRAIN00)library(rpart.plot)rpart.plot(arbol_, type=2, extra=100)
GUARDAR EL ARCHIVO EN NUESTRA COMPUTADORA
# write.csv(TRAIN00,"C:/Users/Jhonn Neira/Desktop/TRABAJO FINAL SOFTWARE/TRAIN00.csv")# PREDICCION prediccion_Arb <-predict(arbol_, TEST01, type ="class") prediccion_Arb